// 1. 实现一个解析查询字符串的方法
// 输入 'https://www.baidu.com?name=%E5%BC%A0%E4%B8%89&age=21'
// 输出 {name: '张三', age: '21'}
// interface SearchType {
//   [propsName: string]: string;
// }
// function formatUrlSearch(url: string): SearchType {
//   const obj: SearchType = {};
//   // https://www.baidu.com?name=%E5%BC%A0%E4%B8%89&age=21
//   const index = url.indexOf("?");
//   // name=%E5%BC%A0%E4%B8%89&age=21
//   const str = url.slice(index + 1);
//   // [name=%E5%BC%A0%E4%B8%89, age=21]
//   const arr = str.split("&");
//   // [[name,%E5%BC%A0%E4%B8%89], [age, 21]]
//   arr.forEach((v) => {
//     const [key, value] = v.split("=");
//     console.log(key, decodeURI(value));
//     obj[key] = decodeURI(value);
//   });

//   return obj;
// }

// const s = formatUrlSearch(
//   "https://www.baidu.com?name=%E5%BC%A0%E4%B8%89&age=21"
// );

// 2.实现Function.protorype.bind

// var a1 = { a: 1 };
// var a2 = { a: 2 };

// var f = function (this: any, ...args: number[]) {
//   console.log(this.a);
//   console.log(...args);
// };

// var f1 = f.bind(12312, 1, 2); // 执行 f1() ===>输出 1 1 2
// var f2 = f.bind(123121, 3, 4); // 执行 f2() ===>输出 2 3 4

/**
 * 3.找出字符串字母出现的次数
 * 输入：'abc,abc,aaa'
 * 输出: { a: 5, b: 2, c: 2, ',': 2 }
 * 测试: console.log(find('abc,abc,aaa' ))
 */

// interface CharType {
//   [propsName: string]: number;
// }
// function findCharCount(str: string): CharType {
//   const obj: CharType = {};
//   str.split("").forEach((v) => {
//     if (obj[v]) {
//       obj[v]++;
//     } else {
//       obj[v] = 1;
//     }
//   });
//   return obj;
// }

// const s1 = findCharCount("abc,abc,aaa");
// console.log(s1);
